import { defineStore } from "pinia";
// 专门处理权限路由的模块
import { publicRoutes, privateRoutes } from '@/router'

export const usePermissionStore = defineStore('permission',{
    state: () => {
        return{
            // 路由表：初始拥有静态路由权限
            routes: publicRoutes
        }
    },
    actions:{
        /**
         * 增加路由
         */
        setRoutes(newRoutes) {
            // 永远在静态路由的基础上增加新路由
            this.routes = [...publicRoutes, ...newRoutes]
        } ,
        /**
         * 根据权限筛选路由
         */
        filterRoutes(menus) {
            // 筛选之后，获取到的通过addRoute进行添加的路由表
            const routes = []
            // 路由权限匹配
            menus.forEach((key:any) => {
                // @ts-ignore 权限名 与 路由的 name 匹配
                routes.push(...privateRoutes.filter((item) => item.name === key))
            })
            // @ts-ignore 最后添加 不匹配路由进入 404
            routes.push({path: '/:catchAll(.*)', redirect: '/404'})
            this.setRoutes(routes)
            return routes
        }
    },
})

